using System;
using System.Collections.Generic;

namespace JGSY.CMS.LowCode.Platform.Application.DTOs
{
    /// <summary>
    /// 团队成员数据传输对象
    /// 用于传输团队成员信息和权限级别
    /// </summary>
    public class TeamMemberDto
    {
        /// <summary>
        /// 团队ID
        /// </summary>
        public long TeamId { get; set; }
        
        /// <summary>
        /// 团队名称
        /// </summary>
        public string TeamName { get; set; } = string.Empty;
        
        /// <summary>
        /// 用户ID
        /// </summary>
        public long UserId { get; set; }
        
        /// <summary>
        /// 用户姓名
        /// </summary>
        public string UserName { get; set; } = string.Empty;
        
        /// <summary>
        /// 用户真实姓名
        /// </summary>
        public string? RealName { get; set; }
        
        /// <summary>
        /// 用户头像
        /// </summary>
        public string? Avatar { get; set; }
        
        /// <summary>
        /// 角色名称
        /// </summary>
        public string? RoleName { get; set; }
        
        /// <summary>
        /// 加入时间
        /// </summary>
        public DateTime JoinedAt { get; set; }
        
        /// <summary>
        /// 离开时间
        /// </summary>
        public DateTime? LeftAt { get; set; }
        
        /// <summary>
        /// 成员状态
        /// </summary>
        public byte Status { get; set; }
        
        /// <summary>
        /// 权限级别
        /// </summary>
        public int PermissionLevel { get; set; }
        
        /// <summary>
        /// 是否团队管理员
        /// </summary>
        public bool IsAdmin { get; set; }
        
        /// <summary>
        /// 备注信息
        /// </summary>
        public string? Remark { get; set; }
        
        /// <summary>
        /// 添加人ID
        /// </summary>
        public long? AddedBy { get; set; }
        
        /// <summary>
        /// 添加人姓名
        /// </summary>
        public string? AddedByName { get; set; }
        
        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreatedAt { get; set; }
    }
}
